package com.yb.livewykt.ui.inter

import com.yb.livewykt.bean.LightMakeupItem
import com.yb.livewykt.bean.MakeupEntity
import com.yb.livewykt.bean.Beauty

interface OnFUControlListener {

    /**
     * 美颜效果全局开关
     *
     * @param isOn
     */
    fun setBeautificationOn(isOn: Boolean)

    /**
     * 音乐滤镜时间
     *
     * @param time
     */
    fun onMusicFilterTime(time: Long)

    /**
     * 选择道具贴纸
     *
     * @param effect
     */
    fun onEffectSelected(effect: Beauty)

    /**
     * 美颜滤镜名称
     *
     * @param name
     */
    fun onFilterNameSelected(name: String)

    /**
     * 美颜滤镜强度
     *
     * @param level
     */
    fun onFilterLevelSelected(level: Float)

    /**
     * 美发颜色
     *
     * @param type
     * @param index
     * @param strength
     */
    fun onHairSelected(type: Int, index: Int, strength: Float)

    /**
     * 美发强度
     *
     * @param index
     * @param strength
     */
    fun onHairStrengthSelected(index: Int, strength: Float)

    /**
     * 磨皮类型
     *
     * @param type 0 清晰磨皮，1 重度磨皮，2 精细磨皮
     */
    fun onBlurTypeSelected(type: Float)

    /**
     * 磨皮程度
     *
     * @param level 磨皮程度 [0, 6]，默认 6.0
     */
    fun onBlurLevelSelected(level: Float)

    /**
     * 美白
     *
     * @param level
     */
    fun onColorLevelSelected(level: Float)

    /**
     * 红润
     *
     * @param level
     */
    fun onRedLevelSelected(level: Float)

    /**
     * 亮眼
     *
     * @param level
     */
    fun onEyeBrightSelected(level: Float)

    /**
     * 美牙
     *
     * @param level
     */
    fun onToothWhitenSelected(level: Float)

    /**
     * 大眼
     *
     * @param level
     */
    fun onEyeEnlargeSelected(level: Float)

    /**
     * 瘦脸
     *
     * @param level
     */
    fun onCheekThinningSelected(level: Float)

    /**
     * 下巴
     *
     * @param level
     */
    fun onIntensityChinSelected(level: Float)

    /**
     * 额头
     *
     * @param level
     */
    fun onIntensityForeheadSelected(level: Float)

    /**
     * 瘦鼻
     *
     * @param level
     */
    fun onIntensityNoseSelected(level: Float)

    /**
     * 嘴形
     *
     * @param level
     */
    fun onIntensityMouthSelected(level: Float)

    /**
     * 窄脸
     *
     * @param level
     */
    fun onCheekNarrowSelected(level: Float)

    /**
     * 小脸
     *
     * @param level
     */
    fun onCheekSmallSelected(level: Float)

    /**
     * V脸
     *
     * @param level
     */
    fun onCheekVSelected(level: Float)

    /**
     * 切换海报模板
     *
     * @param tempWidth
     * @param tempHeight
     * @param temp
     * @param landmark
     */
    fun onPosterTemplateSelected(
        tempWidth: Int,
        tempHeight: Int,
        temp: ByteArray,
        landmark: FloatArray
    )

    /**
     * 海报换脸输入照片
     *
     * @param inputWidth
     * @param inputHeight
     * @param input
     * @param landmark
     */
    fun onPosterInputPhoto(
        inputWidth: Int,
        inputHeight: Int,
        input: ByteArray,
        landmark: FloatArray
    )

    /**
     * 设置风格滤镜
     *
     * @param style
     */
    fun setCartoonFilter(style: Int)

    /**
     * 调节多个轻美妆的妆容
     *
     * @param makeupItems
     */
    fun onLightMakeupCombinationSelected(makeupItems: List<LightMakeupItem>)

    /**
     * 轻美妆妆容调节强度
     *
     * @param makeupItem
     */
    fun onLightMakeupItemLevelChanged(makeupItem: LightMakeupItem)

    /**
     * 设置美妆组合妆容
     *
     * @param makeupEntity
     * @param paramMap
     */
    fun selectMakeup(makeupEntity: MakeupEntity, paramMap: Map<String, Any>)

    /**
     * 设置美妆妆容参数
     *
     * @param paramMap
     */
    fun setMakeupItemParam(paramMap: Map<String, Any>)

    /**
     * 调节美妆妆容强度
     *
     * @param name
     * @param density
     */
    fun setMakeupItemIntensity(name: String, density: Double)

    /**
     * 设置美妆妆容颜色
     *
     * @param name
     * @param colors RGBA color
     */
    fun setMakeupItemColor(name: String, colors: DoubleArray)

    /**
     * 设置瘦身程度
     *
     * @param intensity
     */
    fun setBodySlimIntensity(intensity: Float)

    /**
     * 设置长腿程度
     *
     * @param intensity
     */
    fun setLegSlimIntensity(intensity: Float)

    /**
     * 设置细腰程度
     *
     * @param intensity
     */
    fun setWaistSlimIntensity(intensity: Float)

    /**
     * 设置美肩程度
     *
     * @param intensity
     */
    fun setShoulderSlimIntensity(intensity: Float)

    /**
     * 设置美臀程度
     *
     * @param intensity
     */
    fun setHipSlimIntensity(intensity: Float)

    /**
     * 设置小头程度
     *
     * @param intensity
     */
    fun setHeadSlimIntensity(intensity: Float)

    /**
     * 设置瘦腿程度
     *
     * @param intensity
     */
    fun setLegThinSlimIntensity(intensity: Float)

    /**
     * 设置去黑眼圈强度
     *
     * @param strength
     */
    fun setRemovePouchStrength(strength: Float)

    /**
     * 设置去法令纹强度
     *
     * @param strength
     */
    fun setRemoveNasolabialFoldsStrength(strength: Float)

    /**
     * 设置微笑嘴角强度
     *
     * @param intensity
     */
    fun setSmileIntensity(intensity: Float)

    /**
     * 设置开眼角强度
     *
     * @param intensity
     */
    fun setCanthusIntensity(intensity: Float)

    /**
     * 设置人中长度
     *
     * @param intensity
     */
    fun setPhiltrumIntensity(intensity: Float)

    /**
     * 设置鼻子长度
     *
     * @param intensity
     */
    fun setLongNoseIntensity(intensity: Float)

    /**
     * 设置眼睛间距
     *
     * @param intensity
     */
    fun setEyeSpaceIntensity(intensity: Float)

    /**
     * 设置眼睛角度
     *
     * @param intensity
     */
    fun setEyeRotateIntensity(intensity: Float)
}